################################################################################
# Copyright IBM Corp. and others 2021
#
# This program and the accompanying materials are made available under
# the terms of the Eclipse Public License 2.0 which accompanies this
# distribution and is available at https://www.eclipse.org/legal/epl-2.0/
# or the Apache License, Version 2.0 which accompanies this distribution and
# is available at https://www.apache.org/licenses/LICENSE-2.0.
#
# This Source Code may also be made available under the following
# Secondary Licenses when the conditions for such availability set
# forth in the Eclipse Public License, v. 2.0 are satisfied: GNU
# General Public License, version 2 with the GNU Classpath
# Exception [1] and GNU General Public License, version 2 with the
# OpenJDK Assembly Exception [2].
#
# [1] https://www.gnu.org/software/classpath/license.html
# [2] https://openjdk.org/legal/assembly-exception.html
#
# SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0 OR GPL-2.0-only WITH OpenJDK-assembly-exception-1.0
################################################################################

set(OMR_ENHANCED_WARNINGS OFF)
j9vm_add_library(clinkerffitests SHARED
	downcall.c
	upcall.c
	valist.c
)
target_link_libraries(clinkerffitests
	PRIVATE
		j9vm_interface
		jvm
)

omr_add_exports(clinkerffitests
	add2Ints
	add3Ints
	addIntAndChar
	add2IntsReturnVoid
	add2BoolsWithOr
	createNewCharFrom2Chars
	add2Bytes
	add2Shorts
	add2Longs
	add2Floats
	add2Doubles
	addIntAndIntFromPointer
	addBoolAndBoolFromPointerWithOr
	createNewCharFromCharAndCharFromPointer
	addByteAndByteFromPointer
	addShortAndShortFromPointer
	addLongAndLongFromPointer
	addFloatAndFloatFromPointer
	addDoubleAndDoubleFromPointer
	addBoolAndBoolsFromStructWithXor
	addBoolFromPointerAndBoolsFromStructWithXor
	addBoolFromPointerAndBoolsFromStructWithXor_returnBoolPointer
	addBoolAndBoolsFromStructPointerWithXor
	addBoolAndBoolsFromNestedStructWithXor
	addBoolAndBoolsFromNestedStructWithXor_reverseOrder
	addBoolAndBoolsFromStructWithNestedBoolArray
	addBoolAndBoolsFromStructWithNestedBoolArray_reverseOrder
	addBoolAndBoolsFromStructWithNestedStructArray
	addBoolAndBoolsFromStructWithNestedStructArray_reverseOrder
	add2BoolStructsWithXor_returnStruct
	add2BoolStructsWithXor_returnStructPointer
	add3BoolStructsWithXor_returnStruct
	addByteAndBytesFromStruct
	addByteFromPointerAndBytesFromStruct
	addByteFromPointerAndBytesFromStruct_returnBytePointer
	addByteAndBytesFromStructPointer
	addByteAndBytesFromNestedStruct
	addByteAndBytesFromNestedStruct_reverseOrder
	addByteAndBytesFromStructWithNestedByteArray
	addByteAndBytesFromStructWithNestedByteArray_reverseOrder
	addByteAndBytesFromStructWithNestedStructArray
	addByteAndBytesFromStructWithNestedStructArray_reverseOrder
	add2ByteStructs_returnStruct
	add2ByteStructs_returnStructPointer
	add3ByteStructs_returnStruct
	addCharAndCharsFromStruct
	addCharFromPointerAndCharsFromStruct
	addCharFromPointerAndCharsFromStruct_returnCharPointer
	addCharAndCharsFromStructPointer
	addCharAndCharsFromNestedStruct
	addCharAndCharsFromNestedStruct_reverseOrder
	addCharAndCharsFromStructWithNestedCharArray
	addCharAndCharsFromStructWithNestedCharArray_reverseOrder
	addCharAndCharsFromStructWithNestedStructArray
	addCharAndCharsFromStructWithNestedStructArray_reverseOrder
	add2CharStructs_returnStruct
	add2CharStructs_returnStructPointer
	add3CharStructs_returnStruct
	addShortAndShortsFromStruct
	addShortFromPointerAndShortsFromStruct
	addShortFromPointerAndShortsFromStruct_returnShortPointer
	addShortAndShortsFromStructPointer
	addShortAndShortsFromNestedStruct
	addShortAndShortsFromNestedStruct_reverseOrder
	addShortAndShortsFromStructWithNestedShortArray
	addShortAndShortsFromStructWithNestedShortArray_reverseOrder
	addShortAndShortsFromStructWithNestedStructArray
	addShortAndShortsFromStructWithNestedStructArray_reverseOrder
	add2ShortStructs_returnStruct
	add2ShortStructs_returnStructPointer
	add3ShortStructs_returnStruct
	addIntAndIntsFromStruct
	addIntAndIntShortFromStruct
	addIntAndShortIntFromStruct
	addIntFromPointerAndIntsFromStruct
	addIntFromPointerAndIntsFromStruct_returnIntPointer
	addIntAndIntsFromStructPointer
	addIntAndIntsFromNestedStruct
	addIntAndIntsFromNestedStruct_reverseOrder
	addIntAndIntsFromStructWithNestedIntArray
	addIntAndIntsFromStructWithNestedIntArray_reverseOrder
	addIntAndIntsFromStructWithNestedStructArray
	addIntAndIntsFromStructWithNestedStructArray_reverseOrder
	add2IntStructs_returnStruct
	add2IntStructs_returnStructPointer
	add3IntStructs_returnStruct
	addLongAndLongsFromStruct
	addIntAndIntLongFromStruct
	addIntAndLongIntFromStruct
	addLongFromPointerAndLongsFromStruct
	addLongFromPointerAndLongsFromStruct_returnLongPointer
	addLongAndLongsFromStructPointer
	addLongAndLongsFromNestedStruct
	addLongAndLongsFromNestedStruct_reverseOrder
	addLongAndLongsFromStructWithNestedLongArray
	addLongAndLongsFromStructWithNestedLongArray_reverseOrder
	addLongAndLongsFromStructWithNestedStructArray
	addLongAndLongsFromStructWithNestedStructArray_reverseOrder
	add2LongStructs_returnStruct
	add2LongStructs_returnStructPointer
	add3LongStructs_returnStruct
	addFloatAndFloatsFromStruct
	addFloatFromPointerAndFloatsFromStruct
	addFloatFromPointerAndFloatsFromStruct_returnFloatPointer
	addFloatAndFloatsFromStructPointer
	addFloatAndFloatsFromNestedStruct
	addFloatAndFloatsFromNestedStruct_reverseOrder
	addFloatAndFloatsFromStructWithNestedFloatArray
	addFloatAndFloatsFromStructWithNestedFloatArray_reverseOrder
	addFloatAndFloatsFromStructWithNestedStructArray
	addFloatAndFloatsFromStructWithNestedStructArray_reverseOrder
	add2FloatStructs_returnStruct
	add2FloatStructs_returnStructPointer
	add3FloatStructs_returnStruct
	addDoubleAndDoublesFromStruct
	addDoubleAndFloatDoubleFromStruct
	addDoubleAndIntDoubleFromStruct
	addDoubleAndDoubleFloatFromStruct
	addDoubleAndDoubleIntFromStruct
	addDoubleFromPointerAndDoublesFromStruct
	addDoubleFromPointerAndDoublesFromStruct_returnDoublePointer
	addDoubleAndDoublesFromStructPointer
	addDoubleAndDoublesFromNestedStruct
	addDoubleAndDoublesFromNestedStruct_reverseOrder
	addDoubleAndDoublesFromStructWithNestedDoubleArray
	addDoubleAndDoublesFromStructWithNestedDoubleArray_reverseOrder
	addDoubleAndDoublesFromStructWithNestedStructArray
	addDoubleAndDoublesFromStructWithNestedStructArray_reverseOrder
	add2DoubleStructs_returnStruct
	add2DoubleStructs_returnStructPointer
	add3DoubleStructs_returnStruct
	validateNullAddrArgument
	validateTrivialOption
	addBoolAndBoolsFromUnionWithXor
	addBoolAndBoolsFromUnionPtrWithXor
	addBoolAndBoolsFromNestedUnionWithXor
	addBoolAndBoolsFromNestedUnionWithXor_reverseOrder
	addBoolAndBoolsFromUnionWithNestedBoolArray
	addBoolAndBoolsFromUnionWithNestedBoolArray_reverseOrder
	addBoolAndBoolsFromUnionWithNestedUnionArray
	addBoolAndBoolsFromUnionWithNestedUnionArray_reverseOrder
	add2BoolUnionsWithXor_returnUnion
	add2BoolUnionsWithXor_returnUnionPtr
	add3BoolUnionsWithXor_returnUnion
	addByteAndBytesFromUnion
	addByteAndBytesFromUnionPtr
	addByteAndBytesFromNestedUnion
	addByteAndBytesFromNestedUnion_reverseOrder
	addByteAndBytesFromUnionWithNestedByteArray
	addByteAndBytesFromUnionWithNestedByteArray_reverseOrder
	addByteAndBytesFromUnionWithNestedUnionArray
	addByteAndBytesFromUnionWithNestedUnionArray_reverseOrder
	add2ByteUnions_returnUnion
	add2ByteUnions_returnUnionPtr
	add3ByteUnions_returnUnion
	addCharAndCharsFromUnion
	addCharAndCharsFromUnionPtr
	addCharAndCharsFromNestedUnion
	addCharAndCharsFromNestedUnion_reverseOrder
	addCharAndCharsFromUnionWithNestedCharArray
	addCharAndCharsFromUnionWithNestedCharArray_reverseOrder
	addCharAndCharsFromUnionWithNestedUnionArray
	addCharAndCharsFromUnionWithNestedUnionArray_reverseOrder
	add2CharUnions_returnUnion
	add2CharUnions_returnUnionPtr
	add3CharUnions_returnUnion
	addShortAndShortsFromUnion
	addShortAndShortsFromUnionPtr
	addShortAndShortsFromNestedUnion
	addShortAndShortsFromNestedUnion_reverseOrder
	addShortAndShortsFromUnionWithNestedShortArray
	addShortAndShortsFromUnionWithNestedShortArray_reverseOrder
	addShortAndShortsFromUnionWithNestedUnionArray
	addShortAndShortsFromUnionWithNestedUnionArray_reverseOrder
	add2ShortUnions_returnUnion
	add2ShortUnions_returnUnionPtr
	add3ShortUnions_returnUnion
	addIntAndIntsFromUnion
	addIntAndIntsFromUnionPtr
	addIntAndIntsFromNestedUnion
	addIntAndIntsFromNestedUnion_reverseOrder
	addIntAndIntsFromUnionWithNestedIntArray
	addIntAndIntsFromUnionWithNestedIntArray_reverseOrder
	addIntAndIntsFromUnionWithNestedUnionArray
	addIntAndIntsFromUnionWithNestedUnionArray_reverseOrder
	add2IntUnions_returnUnion
	add2IntUnions_returnUnionPtr
	add3IntUnions_returnUnion
	addLongAndLongsFromUnion
	addLongAndLongsFromUnionPtr
	addLongAndLongsFromNestedUnion
	addLongAndLongsFromNestedUnion_reverseOrder
	addLongAndLongsFromUnionWithNestedLongArray
	addLongAndLongsFromUnionWithNestedLongArray_reverseOrder
	addLongAndLongsFromUnionWithNestedUnionArray
	addLongAndLongsFromUnionWithNestedUnionArray_reverseOrder
	add2LongUnions_returnUnion
	add2LongUnions_returnUnionPtr
	add3LongUnions_returnUnion
	addFloatAndFloatsFromUnion
	addFloatAndFloatsFromUnionPtr
	addFloatAndFloatsFromNestedUnion
	addFloatAndFloatsFromNestedUnion_reverseOrder
	addFloatAndFloatsFromUnionWithNestedFloatArray
	addFloatAndFloatsFromUnionWithNestedFloatArray_reverseOrder
	addFloatAndFloatsFromUnionWithNestedUnionArray
	addFloatAndFloatsFromUnionWithNestedUnionArray_reverseOrder
	add2FloatUnions_returnUnion
	add2FloatUnions_returnUnionPtr
	add3FloatUnions_returnUnion
	addDoubleAndDoublesFromUnion
	addDoubleAndDoublesFromUnionPtr
	addDoubleAndDoublesFromNestedUnion
	addDoubleAndDoublesFromNestedUnion_reverseOrder
	addDoubleAndDoublesFromUnionWithNestedDoubleArray
	addDoubleAndDoublesFromUnionWithNestedDoubleArray_reverseOrder
	addDoubleAndDoublesFromUnionWithNestedUnionArray
	addDoubleAndDoublesFromUnionWithNestedUnionArray_reverseOrder
	add2DoubleUnions_returnUnion
	add2DoubleUnions_returnUnionPtr
	add3DoubleUnions_returnUnion
	addShortAndShortFromUnionWithByteShort
	addShortAndShortFromUnionWithShortByte_reverseOrder
	addIntAndByteFromUnionWithIntByte
	addIntAndIntFromUnionWithByteInt
	addIntAndShortFromUnionWithIntShort
	addIntAndIntFromUnionWithShortInt
	addIntAndByteFromUnionWithIntShortByte
	addIntAndShortFromUnionWithByteShortInt
	addIntAndLongFromUnionWithIntLong
	addIntAndLongFromUnionWithLongInt
	addFloatAndFloatFromUnionWithShortFloat
	addFloatAndFloatFromUnionWithFloatShort
	addFloatAndFloatFromUnionWithIntFloat
	addFloatAndFloatFromUnionWithFloatInt
	addDoubleAndFloatFromUnionWithFloatDouble
	addDoubleAndFloatFromUnionWithDoubleFloat
	addDoubleAndIntFromUnionWithIntDouble
	addDoubleAndDoubleFromUnionWithDoubleInt
	addFloatAndFloatFromUnionWithFloatLong
	addLongAndLongFromUnionWithLongFloat
	addDoubleAndDoubleFromUnionWithLongDouble
	addDoubleAndLongFromUnionWithDoubleLong
	addDoubleAndFloatFromUnionWithIntFloatDouble
	addDoubleAndFloatFromUnionWithIntDoubleFloat
	addLongAndLongFromUnionWithIntFloatLong
	addLongAndLongFromUnionWithIntLongFloat
	addDoubleAndDoubleFromUnionWithFloatLongDouble
	addDoubleAndLongFromUnionWithIntDoubleLong
	addDoubleAndPtrValueFromUnion
	addLongAndPtrValueFromUnion
	addLongAndIntFromUnionWithByteShortIntLong
	addLongAndIntFromUnionWithLongIntShortByte
	addDoubleAndShortFromUnionWithByteShortFloatDouble
	addDoubleAndFloatFromUnionWithDoubleFloatShortByte
	addBoolAndBoolsFromStructWithXor_Nested2BoolUnion
	addBoolAndBoolsFromUnionWithXor_Nested2BoolStruct
	addBoolAndBoolsFromUnionWithXor_Nested4BoolStruct
	add2BoolStructsWithXor_returnStruct_Nested2BoolUnion
	add2BoolUnionsWithXor_returnUnion_Nested2BoolStruct
	addByteAndBytesFromStruct_Nested2ByteUnion
	addByteAndBytesFromUnion_Nested2ByteStruct
	addByteAndBytesFromUnion_Nested4ByteStruct
	add2ByteStructs_returnStruct_Nested2ByteUnion
	add2ByteUnions_returnUnion_Nested2ByteStruct
	addCharAndCharsFromStruct_Nested2CharUnion
	addCharAndCharsFromUnion_Nested2CharStruct
	addCharAndCharsFromUnion_Nested4CharStruct
	add2CharStructs_returnStruct_Nested2CharUnion
	add2CharUnions_returnUnion_Nested2CharStruct
	addShortAndShortsFromStruct_Nested2ShortUnion
	addShortAndShortsFromUnion_Nested2ShortStruct
	addShortAndShortsFromUnion_Nested4ShortStruct
	add2ShortStructs_returnStruct_Nested2ShortUnion
	add2ShortUnions_returnUnion_Nested2ShortStruct
	addIntAndIntsFromStruct_Nested2IntUnion
	addIntAndIntsFromUnion_Nested2IntStruct
	addIntAndIntsFromUnion_Nested4IntStruct
	add2IntStructs_returnStruct_Nested2IntUnion
	add2IntUnions_returnUnion_Nested2IntStruct
	addLongAndLongsFromStruct_Nested2LongUnion
	addLongAndLongsFromUnion_Nested2LongStruct
	addLongAndLongsFromUnion_Nested4LongStruct
	add2LongStructs_returnStruct_Nested2LongUnion
	add2LongUnions_returnUnion_Nested2LongStruct
	addFloatAndFloatsFromStruct_Nested2FloatUnion
	addFloatAndFloatsFromUnion_Nested2FloatStruct
	addFloatAndFloatsFromUnion_Nested4FloatStruct
	add2FloatStructs_returnStruct_Nested2FloatUnion
	add2FloatUnions_returnUnion_Nested2FloatStruct
	addDoubleAndDoublesFromStruct_Nested2DoubleUnion
	addDoubleAndDoublesFromUnion_Nested2DoubleStruct
	addDoubleAndDoublesFromUnion_Nested4DoubleStruct
	add2DoubleStructs_returnStruct_Nested2DoubleUnion
	add2DoubleUnions_returnUnion_Nested2DoubleStruct
	addShortAndShortByteFromUnion_Nested2ByteStruct
	addShortAndBytesFromUnion_Nested4ByteStruct
	addIntAndIntShortFromUnion_Nested2ShortStruct
	addIntAndShortsFromUnion_Nested4ShortStruct
	addBoolsFromMultipleStructPtrs_returnStruct
	addBytesFromMultipleStructPtrs_returnStruct
	addCharsFromMultipleStructPtrs_returnStruct
	addShortsFromMultipleStructPtrs_returnStruct
	addIntsFromMultipleStructPtrs_returnStruct
	addLongsFromMultipleStructPtrs_returnStruct
	addFloatsFromMultipleStructPtrs_returnStruct
	addDoublesFromMultipleStructPtrs_returnStruct
	setBoolFromArrayPtrWithXor
	addByteFromArrayPtrByOne
	addCharFromArrayPtrByOne
	addShortFromArrayPtrByOne
	addIntFromArrayPtrByOne
	addLongFromArrayPtrByOne
	addFloatFromArrayPtrByOne
	addDoubleFromArrayPtrByOne
	add2BoolsWithOrByUpcallMH
	addBoolAndBoolFromPointerWithOrByUpcallMH
	addBoolAndBoolFromNativePtrWithOrByUpcallMH
	addBoolAndBoolFromPtrWithOr_RetPtr_ByUpcallMH
	createNewCharFrom2CharsByUpcallMH
	createNewCharFromCharAndCharFromPointerByUpcallMH
	createNewCharFromCharAndCharFromNativePtrByUpcallMH
	createNewCharFromCharAndCharFromPtr_RetPtr_ByUpcallMH
	add2BytesByUpcallMH
	addByteAndByteFromPointerByUpcallMH
	addByteAndByteFromNativePtrByUpcallMH
	addByteAndByteFromPtr_RetPtr_ByUpcallMH
	add2ShortsByUpcallMH
	addShortAndShortFromPointerByUpcallMH
	addShortAndShortFromNativePtrByUpcallMH
	addShortAndShortFromPtr_RetPtr_ByUpcallMH
	add2IntsByUpcallMH
	addIntAndIntFromPointerByUpcallMH
	addIntAndIntFromNativePtrByUpcallMH
	addIntAndIntFromPtr_RetPtr_ByUpcallMH
	add3IntsByUpcallMH
	addIntAndCharByUpcallMH
	add2IntsReturnVoidByUpcallMH
	add2LongsByUpcallMH
	addLongAndLongFromPointerByUpcallMH
	addLongAndLongFromNativePtrByUpcallMH
	addLongAndLongFromPtr_RetPtr_ByUpcallMH
	add2FloatsByUpcallMH
	addFloatAndFloatFromPointerByUpcallMH
	addFloatAndFloatFromNativePtrByUpcallMH
	addFloatAndFloatFromPtr_RetPtr_ByUpcallMH
	add2DoublesByUpcallMH
	addDoubleAndDoubleFromPointerByUpcallMH
	addDoubleAndDoubleFromNativePtrByUpcallMH
	addDoubleAndDoubleFromPtr_RetPtr_ByUpcallMH
	addBoolAndBoolsFromStructWithXorByUpcallMH
	addBoolAnd20BoolsFromStructWithXorByUpcallMH
	addBoolFromPointerAndBoolsFromStructWithXorByUpcallMH
	addBoolFromPointerAndBoolsFromStructWithXor_returnBoolPointerByUpcallMH
	addBoolAndBoolsFromStructPointerWithXorByUpcallMH
	addBoolAndBoolsFromNestedStructWithXorByUpcallMH
	addBoolAndBoolsFromNestedStructWithXor_reverseOrderByUpcallMH
	addBoolAndBoolsFromStructWithNestedBoolArrayByUpcallMH
	addBoolAndBoolsFromStructWithNestedBoolArray_reverseOrderByUpcallMH
	addBoolAndBoolsFromStructWithNestedStructArrayByUpcallMH
	addBoolAndBoolsFromStructWithNestedStructArray_reverseOrderByUpcallMH
	add2BoolStructsWithXor_returnStructByUpcallMH
	add2BoolStructsWithXor_returnStructPointerByUpcallMH
	add3BoolStructsWithXor_returnStructByUpcallMH
	addByteAndBytesFromStructByUpcallMH
	addByteAnd20BytesFromStructByUpcallMH
	addByteFromPointerAndBytesFromStructByUpcallMH
	addByteFromPointerAndBytesFromStruct_returnBytePointerByUpcallMH
	addByteAndBytesFromStructPointerByUpcallMH
	addByteAndBytesFromNestedStructByUpcallMH
	addByteAndBytesFromNestedStruct_reverseOrderByUpcallMH
	addByteAndBytesFromStructWithNestedByteArrayByUpcallMH
	addByteAndBytesFromStructWithNestedByteArray_reverseOrderByUpcallMH
	addByteAndBytesFromStructWithNestedStructArrayByUpcallMH
	addByteAndBytesFromStructWithNestedStructArray_reverseOrderByUpcallMH
	add1ByteStructs_returnStructByUpcallMH
	add2ByteStructs_returnStructByUpcallMH
	add2ByteStructs_returnStructPointerByUpcallMH
	add3ByteStructs_returnStructByUpcallMH
	addCharAndCharsFromStructByUpcallMH
	addCharFromPointerAndCharsFromStructByUpcallMH
	addCharFromPointerAndCharsFromStruct_returnCharPointerByUpcallMH
	addCharAndCharsFromStructPointerByUpcallMH
	addCharAndCharsFromNestedStructByUpcallMH
	addCharAnd10CharsFromStructByUpcallMH
	addCharAndCharsFromNestedStruct_reverseOrderByUpcallMH
	addCharAndCharsFromStructWithNestedCharArrayByUpcallMH
	addCharAndCharsFromStructWithNestedCharArray_reverseOrderByUpcallMH
	addCharAndCharsFromStructWithNestedStructArrayByUpcallMH
	addCharAndCharsFromStructWithNestedStructArray_reverseOrderByUpcallMH
	add2CharStructs_returnStructByUpcallMH
	add2CharStructs_returnStructPointerByUpcallMH
	add3CharStructs_returnStructByUpcallMH
	addShortAndShortsFromStructByUpcallMH
	addShortAnd10ShortsFromStructByUpcallMH
	addShortFromPointerAndShortsFromStructByUpcallMH
	addShortFromPointerAndShortsFromStruct_returnShortPointerByUpcallMH
	addShortAndShortsFromStructPointerByUpcallMH
	addShortAndShortsFromNestedStructByUpcallMH
	addShortAndShortsFromNestedStruct_reverseOrderByUpcallMH
	addShortAndShortsFromStructWithNestedShortArrayByUpcallMH
	addShortAndShortsFromStructWithNestedShortArray_reverseOrderByUpcallMH
	addShortAndShortsFromStructWithNestedStructArrayByUpcallMH
	addShortAndShortsFromStructWithNestedStructArray_reverseOrderByUpcallMH
	add2ShortStructs_returnStructByUpcallMH
	add2ShortStructs_returnStructPointerByUpcallMH
	add3ShortStructs_returnStructByUpcallMH
	addIntAndIntsFromStructByUpcallMH
	addIntAnd5IntsFromStructByUpcallMH
	addIntFromPointerAndIntsFromStructByUpcallMH
	addIntFromPointerAndIntsFromStruct_returnIntPointerByUpcallMH
	addIntAndIntsFromStructPointerByUpcallMH
	addIntAndIntsFromNestedStructByUpcallMH
	addIntAndIntsFromNestedStruct_reverseOrderByUpcallMH
	addIntAndIntsFromStructWithNestedIntArrayByUpcallMH
	addIntAndIntsFromStructWithNestedIntArray_reverseOrderByUpcallMH
	addIntAndIntsFromStructWithNestedStructArrayByUpcallMH
	addIntAndIntsFromStructWithNestedStructArray_reverseOrderByUpcallMH
	add2IntStructs_returnStructByUpcallMH
	add2IntStructs_returnStructPointerByUpcallMH
	add3IntStructs_returnStructByUpcallMH
	addLongAndLongsFromStructByUpcallMH
	addLongFromPointerAndLongsFromStructByUpcallMH
	addLongFromPointerAndLongsFromStruct_returnLongPointerByUpcallMH
	addLongAndLongsFromStructPointerByUpcallMH
	addLongAndLongsFromNestedStructByUpcallMH
	addLongAndLongsFromNestedStruct_reverseOrderByUpcallMH
	addLongAndLongsFromStructWithNestedLongArrayByUpcallMH
	addLongAndLongsFromStructWithNestedLongArray_reverseOrderByUpcallMH
	addLongAndLongsFromStructWithNestedStructArrayByUpcallMH
	addLongAndLongsFromStructWithNestedStructArray_reverseOrderByUpcallMH
	add2LongStructs_returnStructByUpcallMH
	add2LongStructs_returnStructPointerByUpcallMH
	add3LongStructs_returnStructByUpcallMH
	addFloatAndFloatsFromStructByUpcallMH
	addFloatAnd5FloatsFromStructByUpcallMH
	addFloatFromPointerAndFloatsFromStructByUpcallMH
	addFloatFromPointerAndFloatsFromStruct_returnFloatPointerByUpcallMH
	addFloatAndFloatsFromStructPointerByUpcallMH
	addFloatAndFloatsFromNestedStructByUpcallMH
	addFloatAndFloatsFromNestedStruct_reverseOrderByUpcallMH
	addFloatAndFloatsFromStructWithNestedFloatArrayByUpcallMH
	addFloatAndFloatsFromStructWithNestedFloatArray_reverseOrderByUpcallMH
	addFloatAndFloatsFromStructWithNestedStructArrayByUpcallMH
	addFloatAndFloatsFromStructWithNestedStructArray_reverseOrderByUpcallMH
	add2FloatStructs_returnStructByUpcallMH
	add2FloatStructs_returnStructPointerByUpcallMH
	add3FloatStructs_returnStructByUpcallMH
	addDoubleAndDoublesFromStructByUpcallMH
	addDoubleFromPointerAndDoublesFromStructByUpcallMH
	addDoubleFromPointerAndDoublesFromStruct_returnDoublePointerByUpcallMH
	addDoubleAndDoublesFromStructPointerByUpcallMH
	addDoubleAndDoublesFromNestedStructByUpcallMH
	addDoubleAndDoublesFromNestedStruct_reverseOrderByUpcallMH
	addDoubleAndDoublesFromStructWithNestedDoubleArrayByUpcallMH
	addDoubleAndDoublesFromStructWithNestedDoubleArray_reverseOrderByUpcallMH
	addDoubleAndDoublesFromStructWithNestedStructArrayByUpcallMH
	addDoubleAndDoublesFromStructWithNestedStructArray_reverseOrderByUpcallMH
	add2DoubleStructs_returnStructByUpcallMH
	add2DoubleStructs_returnStructPointerByUpcallMH
	add3DoubleStructs_returnStructByUpcallMH
	addIntAndIntShortFromStructByUpcallMH
	addIntAndShortIntFromStructByUpcallMH
	addIntAndIntLongFromStructByUpcallMH
	addIntAndLongIntFromStructByUpcallMH
	addDoubleAndDoubleIntFromStructByUpcallMH
	addDoubleAndIntDoubleFromStructByUpcallMH
	addDoubleAndFloatDoubleFromStructByUpcallMH
	addDoubleAndDoubleFloatFromStructByUpcallMH
	addDoubleAnd2FloatsDoubleFromStructByUpcallMH
	addDoubleAndDouble2FloatsFromStructByUpcallMH
	addFloatAndInt2FloatsFromStructByUpcallMH
	addFloatAndFloatIntFloatFromStructByUpcallMH
	addDoubleAndIntFloatDoubleFromStructByUpcallMH
	addDoubleAndFloatIntDoubleFromStructByUpcallMH
	addDoubleAndLongDoubleFromStructByUpcallMH
	addFloatAndInt3FloatsFromStructByUpcallMH
	addLongAndLong2FloatsFromStructByUpcallMH
	addFloatAnd3FloatsIntFromStructByUpcallMH
	addLongAndFloatLongFromStructByUpcallMH
	addDoubleAndDoubleFloatIntFromStructByUpcallMH
	addDoubleAndDoubleLongFromStructByUpcallMH
	addLongAnd2FloatsLongFromStructByUpcallMH
	addShortAnd3ShortsCharFromStructByUpcallMH
	addFloatAndIntFloatIntFloatFromStructByUpcallMH
	addDoubleAndIntDoubleFloatFromStructByUpcallMH
	addDoubleAndFloatDoubleIntFromStructByUpcallMH
	addDoubleAndIntDoubleIntFromStructByUpcallMH
	addDoubleAndFloatDoubleFloatFromStructByUpcallMH
	addDoubleAndIntDoubleLongFromStructByUpcallMH
	return254BytesFromStructByUpcallMH
	return4KBytesFromStructByUpcallMH
	validateReturnNullAddrByUpcallMH
	addIntsFromVaList
	addLongsFromVaList
	addDoublesFromVaList
	addMixedArgsFromVaList
	addMoreMixedArgsFromVaList
	addIntsByPtrFromVaList
	addLongsByPtrFromVaList
	addDoublesByPtrFromVaList
	add1ByteOfStructsFromVaList
	add2BytesOfStructsFromVaList
	add3BytesOfStructsFromVaList
	add5BytesOfStructsFromVaList
	add7BytesOfStructsFromVaList
	add1ShortOfStructsFromVaList
	add2ShortsOfStructsFromVaList
	add3ShortsOfStructsFromVaList
	add1IntOfStructsFromVaList
	add2IntsOfStructsFromVaList
	add3IntsOfStructsFromVaList
	add2LongsOfStructsFromVaList
	add1FloatOfStructsFromVaList
	add2FloatsOfStructsFromVaList
	add3FloatsOfStructsFromVaList
	add1DoubleOfStructsFromVaList
	add2DoublesOfStructsFromVaList
	addIntShortOfStructsFromVaList
	addShortIntOfStructsFromVaList
	addIntLongOfStructsFromVaList
	addLongIntOfStructsFromVaList
	addFloatDoubleOfStructsFromVaList
	addDoubleFloatOfStructsFromVaList
	addIntsFromVaListByUpcallMH
	addLongsFromVaListByUpcallMH
	addDoublesFromVaListByUpcallMH
	addMixedArgsFromVaListByUpcallMH
	addMoreMixedArgsFromVaListByUpcallMH
	addIntsByPtrFromVaListByUpcallMH
	addLongsByPtrFromVaListByUpcallMH
	addDoublesByPtrFromVaListByUpcallMH
	add1ByteOfStructsFromVaListByUpcallMH
	add2BytesOfStructsFromVaListByUpcallMH
	add3BytesOfStructsFromVaListByUpcallMH
	add5BytesOfStructsFromVaListByUpcallMH
	add7BytesOfStructsFromVaListByUpcallMH
	add1ShortOfStructsFromVaListByUpcallMH
	add2ShortsOfStructsFromVaListByUpcallMH
	add3ShortsOfStructsFromVaListByUpcallMH
	add1IntOfStructsFromVaListByUpcallMH
	add2IntsOfStructsFromVaListByUpcallMH
	add3IntsOfStructsFromVaListByUpcallMH
	add2LongsOfStructsFromVaListByUpcallMH
	add1FloatOfStructsFromVaListByUpcallMH
	add2FloatsOfStructsFromVaListByUpcallMH
	add3FloatsOfStructsFromVaListByUpcallMH
	add1DoubleOfStructsFromVaListByUpcallMH
	add2DoublesOfStructsFromVaListByUpcallMH
	addIntShortOfStructsFromVaListByUpcallMH
	addShortIntOfStructsFromVaListByUpcallMH
	addIntLongOfStructsFromVaListByUpcallMH
	addLongIntOfStructsFromVaListByUpcallMH
	addFloatDoubleOfStructsFromVaListByUpcallMH
	addDoubleFloatOfStructsFromVaListByUpcallMH
	addNegBytesFromStructByUpcallMH
	addNegShortsFromStructByUpcallMH
	captureTrivialOptionByUpcallMH
	addBoolAndBoolsFromUnionWithXorByUpcallMH
	addBoolAndBoolsFromUnionPtrWithXorByUpcallMH
	addBoolAndBoolsFromNestedUnionWithXorByUpcallMH
	addBoolAndBoolsFromNestedUnionWithXor_reverseOrderByUpcallMH
	addBoolAndBoolsFromUnionWithNestedBoolArrayByUpcallMH
	addBoolAndBoolsFromUnionWithNestedBoolArray_reverseOrderByUpcallMH
	addBoolAndBoolsFromUnionWithNestedUnionArrayByUpcallMH
	addBoolAndBoolsFromUnionWithNestedUnionArray_reverseOrderByUpcallMH
	add2BoolUnionsWithXor_returnUnionByUpcallMH
	add2BoolUnionsWithXor_returnUnionPtrByUpcallMH
	add3BoolUnionsWithXor_returnUnionByUpcallMH
	addByteAndBytesFromUnionByUpcallMH
	addByteAndBytesFromUnionPtrByUpcallMH
	addByteAndBytesFromNestedUnionByUpcallMH
	addByteAndBytesFromNestedUnion_reverseOrderByUpcallMH
	addByteAndBytesFromUnionWithNestedByteArrayByUpcallMH
	addByteAndBytesFromUnionWithNestedByteArray_reverseOrderByUpcallMH
	addByteAndBytesFromUnionWithNestedUnionArrayByUpcallMH
	addByteAndBytesFromUnionWithNestedUnionArray_reverseOrderByUpcallMH
	add2ByteUnions_returnUnionByUpcallMH
	add2ByteUnions_returnUnionPtrByUpcallMH
	add3ByteUnions_returnUnionByUpcallMH
	addCharAndCharsFromUnionByUpcallMH
	addCharAndCharsFromUnionPtrByUpcallMH
	addCharAndCharsFromNestedUnionByUpcallMH
	addCharAndCharsFromNestedUnion_reverseOrderByUpcallMH
	addCharAndCharsFromUnionWithNestedCharArrayByUpcallMH
	addCharAndCharsFromUnionWithNestedCharArray_reverseOrderByUpcallMH
	addCharAndCharsFromUnionWithNestedUnionArrayByUpcallMH
	addCharAndCharsFromUnionWithNestedUnionArray_reverseOrderByUpcallMH
	add2CharUnions_returnUnionByUpcallMH
	add2CharUnions_returnUnionPtrByUpcallMH
	add3CharUnions_returnUnionByUpcallMH
	addShortAndShortsFromUnionByUpcallMH
	addShortAndShortsFromUnionPtrByUpcallMH
	addShortAndShortsFromNestedUnionByUpcallMH
	addShortAndShortsFromNestedUnion_reverseOrderByUpcallMH
	addShortAndShortsFromUnionWithNestedShortArrayByUpcallMH
	addShortAndShortsFromUnionWithNestedShortArray_reverseOrderByUpcallMH
	addShortAndShortsFromUnionWithNestedUnionArrayByUpcallMH
	addShortAndShortsFromUnionWithNestedUnionArray_reverseOrderByUpcallMH
	add2ShortUnions_returnUnionByUpcallMH
	add2ShortUnions_returnUnionPtrByUpcallMH
	add3ShortUnions_returnUnionByUpcallMH
	addIntAndIntsFromUnionByUpcallMH
	addIntAndIntsFromUnionPtrByUpcallMH
	addIntAndIntsFromNestedUnionByUpcallMH
	addIntAndIntsFromNestedUnion_reverseOrderByUpcallMH
	addIntAndIntsFromUnionWithNestedIntArrayByUpcallMH
	addIntAndIntsFromUnionWithNestedIntArray_reverseOrderByUpcallMH
	addIntAndIntsFromUnionWithNestedUnionArrayByUpcallMH
	addIntAndIntsFromUnionWithNestedUnionArray_reverseOrderByUpcallMH
	add2IntUnions_returnUnionByUpcallMH
	add2IntUnions_returnUnionPtrByUpcallMH
	add3IntUnions_returnUnionByUpcallMH
	addLongAndLongsFromUnionByUpcallMH
	addLongAndLongsFromUnionPtrByUpcallMH
	addLongAndLongsFromNestedUnionByUpcallMH
	addLongAndLongsFromNestedUnion_reverseOrderByUpcallMH
	addLongAndLongsFromUnionWithNestedLongArrayByUpcallMH
	addLongAndLongsFromUnionWithNestedLongArray_reverseOrderByUpcallMH
	addLongAndLongsFromUnionWithNestedUnionArrayByUpcallMH
	addLongAndLongsFromUnionWithNestedUnionArray_reverseOrderByUpcallMH
	add2LongUnions_returnUnionByUpcallMH
	add2LongUnions_returnUnionPtrByUpcallMH
	add3LongUnions_returnUnionByUpcallMH
	addFloatAndFloatsFromUnionByUpcallMH
	addFloatAndFloatsFromUnionPtrByUpcallMH
	addFloatAndFloatsFromNestedUnionByUpcallMH
	addFloatAndFloatsFromNestedUnion_reverseOrderByUpcallMH
	addFloatAndFloatsFromUnionWithNestedFloatArrayByUpcallMH
	addFloatAndFloatsFromUnionWithNestedFloatArray_reverseOrderByUpcallMH
	addFloatAndFloatsFromUnionWithNestedUnionArrayByUpcallMH
	addFloatAndFloatsFromUnionWithNestedUnionArray_reverseOrderByUpcallMH
	add2FloatUnions_returnUnionByUpcallMH
	add2FloatUnions_returnUnionPtrByUpcallMH
	add3FloatUnions_returnUnionByUpcallMH
	addDoubleAndDoublesFromUnionByUpcallMH
	addDoubleAndDoublesFromUnionPtrByUpcallMH
	addDoubleAndDoublesFromNestedUnionByUpcallMH
	addDoubleAndDoublesFromNestedUnion_reverseOrderByUpcallMH
	addDoubleAndDoublesFromUnionWithNestedDoubleArrayByUpcallMH
	addDoubleAndDoublesFromUnionWithNestedDoubleArray_reverseOrderByUpcallMH
	addDoubleAndDoublesFromUnionWithNestedUnionArrayByUpcallMH
	addDoubleAndDoublesFromUnionWithNestedUnionArray_reverseOrderByUpcallMH
	add2DoubleUnions_returnUnionByUpcallMH
	add2DoubleUnions_returnUnionPtrByUpcallMH
	add3DoubleUnions_returnUnionByUpcallMH
	addShortAndShortFromUnionWithByteShortByUpcallMH
	addIntAndByteFromUnionWithIntByteByUpcallMH
	addIntAndIntFromUnionWithByteIntByUpcallMH
	addIntAndShortFromUnionWithIntShortByUpcallMH
	addIntAndIntFromUnionWithShortIntByUpcallMH
	addIntAndByteFromUnionWithIntShortByteByUpcallMH
	addIntAndShortFromUnionWithByteShortIntByUpcallMH
	addIntAndLongFromUnionWithIntLongByUpcallMH
	addIntAndLongFromUnionWithLongIntByUpcallMH
	addFloatAndFloatFromUnionWithShortFloatByUpcallMH
	addFloatAndFloatFromUnionWithFloatShortByUpcallMH
	addFloatAndFloatFromUnionWithIntFloatByUpcallMH
	addFloatAndFloatFromUnionWithFloatIntByUpcallMH
	addDoubleAndFloatFromUnionWithFloatDoubleByUpcallMH
	addDoubleAndFloatFromUnionWithDoubleFloatByUpcallMH
	addDoubleAndIntFromUnionWithIntDoubleByUpcallMH
	addDoubleAndDoubleFromUnionWithDoubleIntByUpcallMH
	addFloatAndFloatFromUnionWithFloatLongByUpcallMH
	addLongAndLongFromUnionWithLongFloatByUpcallMH
	addDoubleAndDoubleFromUnionWithLongDoubleByUpcallMH
	addDoubleAndLongFromUnionWithDoubleLongByUpcallMH
	addDoubleAndFloatFromUnionWithIntFloatDoubleByUpcallMH
	addDoubleAndFloatFromUnionWithIntDoubleFloatByUpcallMH
	addLongAndLongFromUnionWithIntFloatLongByUpcallMH
	addLongAndLongFromUnionWithIntLongFloatByUpcallMH
	addDoubleAndDoubleFromUnionWithFloatLongDoubleByUpcallMH
	addDoubleAndLongFromUnionWithIntDoubleLongByUpcallMH
	addDoubleAndPtrValueFromUnionByUpcallMH
	addLongAndPtrValueFromUnionByUpcallMH
	addLongAndIntFromUnionWithByteShortIntLongByUpcallMH
	addLongAndIntFromUnionWithLongIntShortByteByUpcallMH
	addDoubleAndShortFromUnionWithByteShortFloatDoubleByUpcallMH
	addDoubleAndFloatFromUnionWithDoubleFloatShortByteByUpcallMH
	addBoolAndBoolsFromStructWithXor_Nested2BoolUnionByUpcallMH
	addBoolAndBoolsFromUnionWithXor_Nested2BoolStructByUpcallMH
	addBoolAndBoolsFromUnionWithXor_Nested4BoolStructByUpcallMH
	add2BoolStructsWithXor_returnStruct_Nested2BoolUnionByUpcallMH
	add2BoolUnionsWithXor_returnUnion_Nested2BoolStructByUpcallMH
	addByteAndBytesFromStruct_Nested2ByteUnionByUpcallMH
	addByteAndBytesFromUnion_Nested2ByteStructByUpcallMH
	addByteAndBytesFromUnion_Nested4ByteStructByUpcallMH
	add2ByteStructs_returnStruct_Nested2ByteUnionByUpcallMH
	add2ByteUnions_returnUnion_Nested2ByteStructByUpcallMH
	addCharAndCharsFromStruct_Nested2CharUnionByUpcallMH
	addCharAndCharsFromUnion_Nested2CharStructByUpcallMH
	addCharAndCharsFromUnion_Nested4CharStructByUpcallMH
	add2CharStructs_returnStruct_Nested2CharUnionByUpcallMH
	add2CharUnions_returnUnion_Nested2CharStructByUpcallMH
	addShortAndShortsFromStruct_Nested2ShortUnionByUpcallMH
	addShortAndShortsFromUnion_Nested2ShortStructByUpcallMH
	addShortAndShortsFromUnion_Nested4ShortStructByUpcallMH
	add2ShortStructs_returnStruct_Nested2ShortUnionByUpcallMH
	add2ShortUnions_returnUnion_Nested2ShortStructByUpcallMH
	addIntAndIntsFromStruct_Nested2IntUnionByUpcallMH
	addIntAndIntsFromUnion_Nested2IntStructByUpcallMH
	addIntAndIntsFromUnion_Nested4IntStructByUpcallMH
	add2IntStructs_returnStruct_Nested2IntUnionByUpcallMH
	add2IntUnions_returnUnion_Nested2IntStructByUpcallMH
	addLongAndLongsFromStruct_Nested2LongUnionByUpcallMH
	addLongAndLongsFromUnion_Nested2LongStructByUpcallMH
	addLongAndLongsFromUnion_Nested4LongStructByUpcallMH
	add2LongStructs_returnStruct_Nested2LongUnionByUpcallMH
	add2LongUnions_returnUnion_Nested2LongStructByUpcallMH
	addFloatAndFloatsFromStruct_Nested2FloatUnionByUpcallMH
	addFloatAndFloatsFromUnion_Nested2FloatStructByUpcallMH
	addFloatAndFloatsFromUnion_Nested4FloatStructByUpcallMH
	add2FloatStructs_returnStruct_Nested2FloatUnionByUpcallMH
	add2FloatUnions_returnUnion_Nested2FloatStructByUpcallMH
	addDoubleAndDoublesFromStruct_Nested2DoubleUnionByUpcallMH
	addDoubleAndDoublesFromUnion_Nested2DoubleStructByUpcallMH
	addDoubleAndDoublesFromUnion_Nested4DoubleStructByUpcallMH
	add2DoubleStructs_returnStruct_Nested2DoubleUnionByUpcallMH
	add2DoubleUnions_returnUnion_Nested2DoubleStructByUpcallMH
	addShortAndShortByteFromUnion_Nested2ByteStructByUpcallMH
	addShortAndBytesFromUnion_Nested4ByteStructByUpcallMH
	addIntAndIntShortFromUnion_Nested2ShortStructByUpcallMH
	addIntAndShortsFromUnion_Nested4ShortStructByUpcallMH
)

install(
	TARGETS clinkerffitests
	LIBRARY DESTINATION ${j9vm_SOURCE_DIR}
	RUNTIME DESTINATION ${j9vm_SOURCE_DIR}
)
